9.8 deferを使ったエラーのラップ
同じメッセージを使用して複数のエラーをラップしたい場合はdeferを使うことで簡潔にできる
code:go
func DoSomeThings(val1 int, val2 string) (_ string, err error) {
defer func() {
if err != nil {
err = fmt.Errorf("in DoSomeThings: %w", err)
}
}()
val3, err := doThing1(val1)
if err != nil {
return "", err
}
val4, err := doThing2(val2)
if err != nil {
return "", err
}
return doThing3(val3, val4)
}
deferされた関数でerrを参照できるように戻り値の第二引数には名前をつけておく